Systems and methods for loading more than one video content at a time

ABSTRACT

A system for loading videos includes an interactive video player is with a loader. A product configuration file in operation configures files for a user in creation of a custom video. External assets are configured for a design of an interactive layer of the video. The interactive video player in operation creates in real-time a custom video that includes a plurality of video segments.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.13/437,164, filed on Apr. 2, 2012, and entitled “Systems and Methods forLoading More Than One Video Content at a Time,” which is herebyincorporated by reference in its entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention is directed to systems and methods for loadingvideo content, and more particularly to systems and methods that loadmore than one video at the same time.

2. Description of the Related Art

All web servers are capable of progressive download. This is merely themethod of delivering a video file via HTTP to a browser on the clientside. The process is similar to downloading a file from any website butthe difference is that media players can begin to play the video whileit is downloading rather than having to wait until the entire video hasbeen downloaded.

When a video is being delivered via HTTP progressive download, typicallyone sees the buffer bar grow as the video downloads. One is not able towatch the video if the scrubber button is moved past the amount that hasdownloaded already. This makes it impossible to jump to the end of thevideo. If the site has a slow web server or limited bandwidth, or theend user is on a slow Internet connection, then the end user will noticebuffering. Buffering occurs when the download can't stay ahead of thevideo playback. In this instance, the video will stop and only after theplayer will download an additional portion of the video will the playingresume. If the user pauses the video and allows the downloading of alarge portion of the video, the user will likely watch the videouninterrupted.

In almost all progressive downloading, there will be a certain amount ofpreloading, which means that a certain amount of video data is loaded,before the start of playback. Some players will begin to play a video assoon as a small amount of data is received and some will wait until theentire file is downloaded before it plays (in order to preventbuffering).

Current methods load the entire video and just one video is provided.Only after the video is finished playing can another one be loaded.

There is a need to provide improved systems and methods for loadingvideos. There is a further need for loading more than one video at atime.

SUMMARY OF THE INVENTION

An object of the present invention is to provide systems and methods forimproving the loading of videos.

Another object of the present invention is to provide systems andmethods for loading more than one video at a time.

Yet another object of the present invention is to provide systems andmethods where the several videos are loaded at the same time and playedin seamless manner both for audio and video.

Yet another object of the present invention is to provide systems andmethods where videos are loaded at the same time in a seamless mannerand concatenated on client side.

A further object of the present invention is to provide systems andmethods for loading videos where a plurality of videos is loaded, eachhaving a plurality of segments that are standalone videos.

Still another object of the present invention is to provide systems andmethods for loading videos that allow a user to create customizedvideos.

Another object of the present invention is to provide systems andmethods that connect the loaded videos seamlessly on client side.

Another object of the present invention is to provide systems andmethods for loading videos where a user can create a new customizedvideo using selected segments of an original video.

Still another object of the present invention is to provide systems andmethods to create customized videos from a video that is playing.

These and other objects of the present invention are achieved in asystem for loading videos. An interactive video player is provided witha loader. A product configuration file in operation configures files fora user in creation of a custom video. External assets are configured fora design of an interactive layer of the video. The interactive videoplayer in operation creates in real-time a custom video that includes aplurality of video segments.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates one embodiment of an overall system architecture ofthe present invention.

FIG. 2 is a flow chart illustrating one embodiment of downloading videosegments and creating a custom video.

FIG. 3 is a diagram illustrating the differences between a regular videoand a video of the present invention.

FIGS. 4( a) and 4(b) illustrate an embodiment of a sequence ofdownloading videos in an embodiment of the present invention.

FIG. 5 illustrates an embodiment of the present invention with twopossible values for preloading time.

FIG. 6 illustrates an embodiment of the present invention where a loaderdownloads additional video segments to play and once a threshold isreached the video continues playing.

FIG. 7 illustrates an embodiment of the present invention illustratingthat the loader can have priorities.

FIG. 8 illustrates an embodiment of the present invention with socketcommunication.

FIG. 9 illustrates an embodiment of the present invention with a jumpfeature.

FIG. 10 illustrates an embodiment of the present invention showing thatthe user interacts with videos in real time.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Definitions Player

Player Engine

Loading Manager—Is in charge of downloading web-based videos accordingto a certain loading logic. Gets a tree as input from the ProjectConfiguration Manager, and is notified when user/system choices are madeby the Choice Manager (for instance, in order to stop loadingunreachable videos once a selection has been made).

Video Parser—Analyzes and modifies the raw video content, for instance,in order to concatenate two separate videos into a single timeline.

Also in charge of inserting cue points into the video stream (forinstance, junction event).

Video Bytes Appender—Takes different parsed video streams and appendstheir bytes into a single stream of bytes which is then fed into thevideo playback.

Video Playback—Plays back the video for the user to watch. Also notifiesof events using cue points that were embedded within the video stream bythe Video Parser.

Player Frontend/UI

Project Configuration Manager—Manages all project specificconfigurations. Gets as input an external configuration files. TheProject Configuration Manager notifies the Loading Manager of the treestructure and web-based video files, sets the Choice Manager's choicesand the External Assets Manager's configuration.

Choice Manager—Accepts junction notifications from the Video Playbackcomponent, thus showing a user selection GUI (selection buttons).Listens for User Interaction and notifies the Loading Manager that aselection has been made.

External Assets Manager—Is in charge of the loading and displaying ofall project specific external assets (for instance, start screen, playbutton, transport bar, choice buttons, end screen and more).

External Resources (Web Based)

Videos—Web-hosted video files

Project Configuration File—A file that outlines the entire project'sdata, including the tree structure, video files, external assets and anyother project specific data.

External Assets—External web-based files that make up the project'sstart screen, end screen, choice buttons, transport bar and other visualobjects.

Other

User Interaction—Any input by user (such as mouse click, keyboard input,gesture etc.).

The present invention provides systems and their methods to load severalvideos at the same time. With the present invention, the system does notknow which video will be played and relies on user selection. Theconnection between the videos is sufficiently seamless so there is notime to load a video and then wait for the next one to be loaded andthere are no jumps or cuts on connection points between videos.

With the system of the present invention, a plurality of videos areloaded, each having a plurality of segments that are a standalone video.In one embodiment, a user downloads various segments and these are thenselected as segments to be loaded. A custom download is created.

In one embodiment, the system 10 includes a pre-loader 12 which loadssome video before the user can start playing. This can be done on everyplayer, which as a non-limiting example can be you-tube, Netflix, vimeo,and the like. A production company 14 creates the segments of the video.

A video created by the system 10 is an interactive video that offers theuser the opportunity to make a choice, as the video is playing (i.e.,without pausing/stopping the video), that affects the course of thevideo in real-time. In one embodiment, the video is non-linear with manysegments connected by branches. A tree like structure is created withseveral video segments that can appear at the same time point based onhow a user chooses to engage with the video. The video player has to besmart to control the way the segments are downloaded in that the videoplayer considers all possible valid continuations of the video, andmakes sure the video will be played until the end on all possiblescenarios. The player can include other interactive elements includingbut not limited to, links, pop-ups text, pictures, animation, othervideos and the like.

Referring to FIG. 1, the system 10 includes a player 16 with a projectconfiguration manager 18, choice manager 20, external assets manager 22,a loading manager 24, a video parser 26, a video bytes appender 28 and avideo playback 30. The player 16 communicates with videos 32, a productconfiguration file 34, user interaction and external assets 36. Theexternal assets are design assets used for the design of an interactivelayer.

The user can create the video through the use of a user device coupledto the system, including but not limited to, a computer, cell phone,such as Apple's iPhone, other portable electronic devices, such asApple's iPod Touches, Apple's iPads, and mobile devices based onGoogle's Android operating system, and any other portable electronicdevice that includes software, firmware, hardware, or a combinationthereof that is capable of at least receiving the signal, decoding ifneeded, exchanging information with a transaction server to verify thebuyer and/or seller's account information, conducting the transaction,and generating a receipt. Typical components of the user device mayinclude but are not limited to persistent memories like flash ROM,random access memory like SRAM, a camera, a battery, LCD driver, adisplay, a cellular antenna, a speaker, a Bluetooth circuit, and WIFIcircuitry, where the persistent memory may contain programs,applications, and/or an operating system.

Referring to the flow chart of FIG. 2, a load start screen is used topreload video assets until a specific point. After pressing play thesystem plays a first segment, collect first user selection, then playsthe second segment, collect the second user selection and plays the lastsegment. Following the first segment, an updated download is providedaccording to the user selection. Following the second segment, adownload update is provided according to the user's selection, and soon.

The system 10 downloads a video and allows for the creation of multiplesegments of video that can be linked together via branches. In certainembodiments, there can be virtually no limit to the number of segmentsand branches.

As a non-limiting example, a first segment can be the first ten secondsof a video. Two additional segments can be created for the next ten totwenty seconds, each coupled seamlessly to the first segment via anassociated branch.

The downloading continues and the user selects the video it wishes tosee. The system 10 then continues to download. In FIG. 3, the fourrectangles on the right are different remaining segments.

With the present invention, several segments of videos are downloaded atthe same time because the system does not know which will be played.

The diagram in FIG. 3 below illustrates the differences between aregular video and one created by the present invention. In FIG. 3, theregular video is represented as a played video, downloaded video andremaining video to be downloaded. With the video of the presentinvention, a downloaded video from a played video is the first segment.A decision point exists after the first segment where it branches intotwo second segments with remaining video to download. The remainingvideo to download branches from the respective two second segments.

When loading segments for the video, the system loads all possiblesegments that can be chosen by the user. These segments are eitherloaded, or their loading is initiated, prior to the connection point inorder to ensure that the next segment is ready with all of its possiblevariations.

In one embodiment, the loader 12 loads all the possible paths anddisregards paths that the user cannot reach once a particular videosegment is selected and viewed.

As a non-limiting example, illustrated in FIGS. 4( a) and 4(b), asequence of loading is illustrated. Segment 1 is loaded. Segments 2 a, 2b are then loaded. The user selects option 2 b. Segment 2 a is thendisregarded with its entire branch and segment 2 b is loaded. Segments 3c and 3 d are also loaded.

If the system 10 already started loading segment 2 a, and the user thenselects option 2 b, the system 10 stops loading 2 a, as illustrated inFIG. 4( b).

In one embodiment, video segments are pre-loaded in order to give theloader a head start and ensure a seamless video viewing experience. Thepre-loader 12 knows how to dynamically calculate the internet speed foran individual user and how much to preload at the start before the videobegins to play in order for the video to be played without the videostopping and resuming only after it loads more content, e.g., buffering.The system 10 reduces the chance for buffering so the video won't stop.The preload can be configured to any amount of time needed by the videocreator. As a non-limiting example, with a very fast internetconnection, the system and method of the present invention can preload avery small amount of video before playing and knows that the systemmanages loading all the rest of the videos before playing them on everypossible branch.

When the system 10 knows that an internet connection is slow, more videotime is loaded before playing otherwise the player tries to play videothat was not downloaded yet (buffering).

FIG. 5 illustrates an embodiment with two possible values for preloadingtime.

The loader 12 optimizes the net bandwidth utilization to downloadadditional video content according to an individual user's bandwidthconstraints in order to continue downloading video. As a non-limitingexample, this can occur after the preload and before a user pressesplay, or when the video is paused. Optimization is achieved bycontinuing loading during this “dead time” before the user pressed playso more video time is loaded and the chance for buffering is reduced.

After the video starts to play, the loader 12 continues downloading allof the video segments it can until it has nothing left to download. Theloader 12 has a map of all existing videos, knows the length of eachsegment and the possible options to continue. The loader 12 downloadsall possible videos until reaching the last segment on every possiblebranch.

The downloading speed can be affected by many factors including but notlimited to, computer status, service provider, video hosting, programsrunning in the background, net congestion and the like. If, however,during the video, the player played all of the segments of the videothat were successfully downloaded, and the loader still didn't manage toload more content to play or if the amount of downloaded video thatremains is less than a minimum threshold, the system 10 will enter abuffering state. The video playback pauses, the loader 12 downloadsadditional video segments to play, and after a certain threshold isreached, the video continues playing, as illustrated in FIG. 6.

At the end of the played video, the loader 12 can download more videosegments that were effectively discarded during the last play. Thesevideo segments can be used for the next play. This provides foroptimization. When the system 10 loads more segments in current playbackit has less to load on the next play and this significantly reduces thenext loading time.

Referring to FIG. 7, in one embodiment of downloading order, the loader12 can choose how to download the video segments and in what order. Inone embodiment, the same amount of play time is loaded for each segment.This can be the default setting. In another embodiment, all videos areloaded until the end of certain segments and can be used when segmentshave different lengths for each variation. In another embodiment,segments are loaded by order of importance or popularity. This can be,by way of a non-limiting example, knowing which branch is more likely tobe played. In another embodiment, only the start of each segment orselected segments are loaded. In another embodiment, loading is doneonly after a specific segment is selected, such as, by the non-limitingexample, if there is a very large amount of variation for the samesegment.

The loader 12 has priorities for every segment and decides what to loadaccording to the priorities and the user bandwidth. The first priorityis what is currently playing. The second priority is the next segmentand prioritization between all of the subsequent segments according topopularity or importance. The third priority is the segments beyond thenext segment, e.g, subsequent segments, or segments that can be jumpedto.

The loader 12 can choose not to download all the segments but only asubset of them. Each segment has some kind of “Is_loadable ” variablethat indicates if the segment should be loaded or not.

This can occur in several scenarios. In one, if options are effectivelychosen in advance, as a non-limiting example if a user enters its genderin the beginning, and the impact of that option only appears laterduring the video play. Another scenario is if the system 10 makes achoice according to information that was not directly inputted by theuser, such as IP address, social network ID, additional identifiers, andthe like. Additionally, the system 10 can load only the most likelysegments to be played and loads them unless the user chooses differentlyIn terms of which segments to load.

In another embodiment, the loader 12 can have other logic that controlsthe process differently, where logic is another part of the player thatcan control the loader 12 by defining the “Is_loadable” variable foreach segment. The system 10 can allow the user to play the video withcertain segments on the first viewing and different segments on thesecond viewing such that the loader 12 acts accordingly.

In another embodiment, another scenario is after a user interacts with avideo and makes certain choices associated with the video. In thisscenario the user can share his/her passive version of the video withothers (i.e., a third party would not be able to make choices and wouldonly watch the video as the choices were selected by the initial user).In this “passive mode,” the video plays only the selected sequence ofvideo segments and the loader 12 only downloads those segments. However,when the loader 12 completes the required downloads, it can startdownloading the other video segments in the background, while the videois playing, for potential active mode by the new user.

The system 10 can also provide support for download pause and resumefeature. This feature set includes a way to pause a download, save thepartial data that was already downloaded, and, at a later time, continuedownloading from the same point on all branches.

The system 10 allows for download pause and resume. In one embodiment,this is achieved by adding a “Range” field to an HTTP request. However,Flash does not allow this field to be added to an HTTP request due tosecurity restrictions. The HTTP “Range” field, as defined by RFC 2616,section 14.35, allows the retrieval of a sub-range of bytes of therequested file, thus allowing a download of partial data, or resuming ofa partially downloaded file from the place we left off.

In order to get around this security restriction, the system 10implements a more low-level form of communication instead of using thestandard feature set that Flash provides. Because the standard AdobeFlash API for HTTP requests does not allow addition of the “Range”header to an HTTP request, the system 10 avoids using the standard APIand implements its own HTTP client.

Referring to FIG. 8, in one embodiment, socket communication is used toimplement HTTP communication and partial downloads are manually saved toan array of bytes, also known as ByteArray. With this method, the system10 pauses a download, saves partial data, and later sends an HTTPrequest with a “Range” field, so that the download restarts at thecorrect offset. The new incoming data is appended in the ByteArray. Thisis useful to system 10 player's loading logic because one can now pausevideo stream downloads which are not currently needed, but may berequired later in playback or replay, without re-downloading the entirefile. This increases efficiency and avoids redundant network traffic andprocessing. In another embodiment, the system re-downloads the entiredropped file from the beginning and dumps the partial data that wasdownloaded. However, this can be wasteful.

In various embodiments, the system 10 provides a jump feature,illustrated in FIG. 9. In some videos the user can jump to a differentpart of the tree. As a non-limiting example, if the character dies orthe user wishes to skip a part, then the loader 12 downloads thedestination part in order to prevent buffering on such a jump. Becauseevery segment has its own priority, the loader 12 can have a highpriority for a distant segment. The user then starts loading beforeloading closer segments. In order to ensure that if the user will decideto jump to this segment it will already be loaded.

Referring now to FIG. 10, in some videos the user can move back andforth between two or more branches. This means that the loader 12 doesnot pause the loading of the segments that were not selected since theycan still be used. Back and forth movement is achieved in the samemanner. The options always appear on the screen and the two videos areplayed simultaneously, and the loader 12 needs to download both parallelsegments.

In various embodiments, the user interacts with videos of the presentinvention in real-time while the video is playing. This user caninteract with the video with any known variety of mechanisms, includingbut not limited to, mouse clicks, mouse movement, eye movement, keyboardand the like.

In various embodiments, the segments, even if offered at a singledecision point, can have different lengths. As a non-limiting example, auser can choose between segment A1 or A2 where A1 and A2 have differentlengths. A decision point is not limited to a binary option. The numberof decision point options can be larger and a segment can continue toany number of presented options.

With the present invention, the interactive nature of a video impactsthe video's content and the user can control the video's path. With thepresent invention, every option changes something on the video content.With the present invention, moving from one video segment to the nextcan take some time and can also be immediate upon clicking the desiredoption, with virtually no delay from the time a decision is made to theplaying of the associated video segment. In most instances, the optionsare selected by the user. However, in some circumstances the system 10can select the options for the user. As non-limiting examples this canbe by IP, physical location, weather, user id and the like. The videocan also include personal data inside the video.

The player can be used on any device that displays video and enablesuser engagement including but not limited to, personal computers,tablets, cellular phones, music players and the like.

The player can includes an interactive layer on top of the video. Thislayer presents output to the user, such as option buttons, a clock andthe like, and collects the input from the user. Interactive elements onthe interactive layer can be different for each video segment to providethat when a new segment is loaded and played the player can add theappropriate interactive elements to it.

Expected variations or differences in the results are contemplated inaccordance with the objects and practices of the present invention. Itis intended, therefore, that the invention be defined by the scope ofthe claims which follow and that such claims be interpreted as broadlyas is reasonable.

1-20. (canceled)
 21. A system for presenting media content, the mediacontent comprising a plurality of video segments, the system comprising:a video loading manager for determining a first subset of the videosegments to download; a video playback engine for presenting a first oneof the video segments; and a choice manager for receiving a selection ofa second video segment for playback; and wherein the video loadingmanager is further for determining a second subset of the video segmentsto download based at least in part on the selection of the second videosegment.
 22. The system of claim 21, wherein the video loading manageris further for downloading at least a portion of each of the firstsubset of video segments.
 23. The system of claim 22, wherein the videoloading manager is further for stopping the download of at least onevideo segment in the first subset based at least in part on theselection of the second video segment.
 24. The system of claim 22,wherein the video loading manager is further for downloading at least aportion of each of the second subset of video segments.
 25. The systemof claim 21, wherein the determination of the first subset of videosegments is based at least in part on a download priority.
 26. Thesystem of claim 25, wherein the download priority is based at least inpart on a popularity of the first subset of video segments amongprevious viewers thereof.
 27. The system of claim 25, wherein thedownload priority is based on one or more user characteristics.
 28. Thesystem of claim 27, wherein the user characteristics comprise one ormore of a gender, an age, a location, and a prior viewing history. 29.The system of claim 25, wherein the video loading manager is further forinitiating download of the first subset of video segments according tothe download priority and prior to completion of playback of the firstvideo segment.
 30. The system of claim 21, wherein the plurality ofvideo segments is organized according to a tree structure comprisingdecision points at which one of the video segments may be selected fordownloading and viewing such that only certain of the video segmentsremain potentially viewable.
 31. The system of claim 30, wherein thedetermination of the second subset of video segments is further based atleast in part on a download priority.
 32. The system of claim 31,wherein the download priority is based at least in part on a location ofthe second video segment in the tree structure and which subsequentsegments are connected to the second video segment within the treestructure.
 33. A method of presenting media content, the media contentcomprising a plurality of video segments, the method comprising:determining a first subset of the video segments to download; presentinga first one of the video segments; receiving a selection of a secondvideo segment for playback; and determining a second subset of the videosegments to download based at least in part on the selection of thesecond video segment.
 34. The method of claim 33, further comprisingdownloading at least a portion of each of the first subset of videosegments.
 35. The method of claim 34, further comprising stopping thedownload of at least one video segment in the first subset based atleast in part on the selection of the second video segment.
 36. Themethod of claim 33, wherein the determination of the first subset ofvideo segments is based at least in part on a download priority.
 37. Themethod of claim 36, wherein the download priority is based at least inpart on a popularity of the first subset of video segments amongprevious viewers thereof.
 38. The method of claim 36, wherein thedownload priority is based on one or more user characteristics.
 39. Themethod of claim 33, wherein the plurality of video segments is organizedaccording to a tree structure comprising decision points at which one ofthe video segments may be selected for downloading and viewing such thatonly certain of the video segments remain potentially viewable.
 40. Themethod of claim 39, wherein the determination of the second subset ofvideo segments is further based at least in part on a download priority.41. The method of claim 40, wherein the download priority is based atleast in part on a location of the second video segment in the treestructure and which subsequent segments are connected to the secondvideo segment within the tree structure.